package com.hsnn.medstgmini.pro.project.controller;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.hsnn.medstgmini.Constants;
import com.hsnn.medstgmini.exception.MSException;
import com.hsnn.medstgmini.pro.project.model.form.ProdProjectForm;
import com.hsnn.medstgmini.pro.project.service.PsProjectManager;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.util.DateUtil;
import com.hsnn.medstgmini.util.Pagination;
import com.hsnn.medstgmini.util.ParseDate;

/**
 * @category 配送企业端项目管理
 * @author wangbing
 * @date 2015年8月24日
 */
@Controller
@RequestMapping("/psProject")
public class PsProjectController {

	private static final Logger logger = LoggerFactory
			.getLogger(PsProjectController.class);

	@Autowired
	private PsProjectManager psProjectManager;

	@Autowired
	private HttpServletRequest request;

	@Autowired
	private HttpSession session;

	/**
	 * @category 获取当前登陆人信息
	 * @author 言科
	 * @date 2015年7月22日 SysUser
	 */
	public SysUser getUser() {
		return (SysUser) session.getAttribute(Constants.USERINFO);
	}

	/**
	 * @category 跳转项目管理列表
	 * @date 2015年8月24日
	 * @return
	 */
	@RequestMapping("/toPsjectList")
	public String toProjectList(Model model) {
		logger.info("enter toPsjectList method!");
		model.addAttribute("date", DateUtil.date());
		return "/pro/project/psProjectList";
	}

	/**
	 * @category 分页查询项目列表
	 * @date 2015年8月24日
	 * @return
	 */
	@RequestMapping("/getProjectList")
	@ResponseBody
	public Pagination getProjectList(ProdProjectForm form) {
		Pagination page = new Pagination(request);
		SysUser user = (SysUser)request.getSession().getAttribute(Constants.USERINFO);
		try {
			String defalutProjId=  user.getDefaultProjId();
			if (StringUtils.isNotBlank(defalutProjId)) {
				page.getConditions().put("defalutProjId", defalutProjId);
				form.setProjId(defalutProjId);
			}
			page.setForm(form);
			psProjectManager.getProjectList(page,user);
			page.setSuccess(true);
		} catch (Exception e) {
			e.printStackTrace();
			logger.error(e.getMessage());
			page.setSuccess(false);
		}
		return page;
	}
	
	/**
	 * @category 分页查询已报名的有效项目
	 * @date 2015年8月26日
	 * @param form
	 * @return
	 */
	@RequestMapping("/getMyProjectList")
	@ResponseBody
	public Pagination getMyProjectList(ProdProjectForm form) {
		Pagination page = new Pagination(request);
		try {
			page.setForm(form);
			psProjectManager.getMyProjectList(page, getUser());
			page.setSuccess(true);
		} catch (Exception e) {
			e.printStackTrace();
			logger.error(e.getMessage());
			page.setSuccess(false);
		}
		return page;
	}

	/**
	 * @category 企业投标报名
	 * @date 2015年8月24日
	 * @return
	 */
	@RequestMapping("/enroll")
	@ResponseBody
	public Pagination enroll(String projId) {
		Pagination page = new Pagination(request);
		try {
			if (StringUtils.isNotBlank(projId)) {
				psProjectManager.enroll(projId, getUser());
				page.setSuccess(true);
			}
		} catch (MSException e) {
			e.printStackTrace();
			logger.error(e.getMessage());
			page.setSuccess(false);
			page.setMsg(e.getMsg());
		} catch (Exception e) {
			e.printStackTrace();
			logger.error(e.getMessage());
			page.setSuccess(false);
		}
		return page;
	}

	/**
	 * @category 跳转项目时间段查看页面
	 * @date 2015年8月24日
	 * @return
	 */
	@RequestMapping("/toPsProjectTimeView")
	public String toPsProjectTimeView(Model model, String projId) {
		logger.info("enter toPsProjectTimeView method!");
		ProdProjectForm form = psProjectManager.getProjectTimeView(projId);
		model.addAttribute("form", form);
		model.addAttribute("date", ParseDate.parseFullFormat(new Date()));
		return "/pro/project/psProjectTimeView";
	}

	/**
	 * @category 跳转项目报价解密密码设置页面
	 * @date 2015年8月24日
	 * @param model
	 * @param projId
	 * @return
	 */
	@RequestMapping("/toPsPasswordSet")
	public String toPsPasswordSet(Model model, String projId) {
		logger.info("enter toPsPasswordSet method!");
		model.addAttribute("projId", projId);
		return "/pro/project/psPasswordSet";
	}

	/**
	 * @category 设置密码
	 * @date 2015年8月24日
	 * @param form
	 * @return
	 */
	@RequestMapping("/setPassword")
	@ResponseBody
	public Pagination setPassword(ProdProjectForm form) {
		Pagination page = new Pagination(request);
		try {
			String password = form.getPassword();
			if (StringUtils.isBlank(password)) {
				page.setSuccess(false);
				page.setMsg("请输入密码！");
			} else {
				psProjectManager.setPassword(form, getUser());
				page.setSuccess(true);
			}
		} catch (MSException e) {
			e.printStackTrace();
			logger.error(e.getMessage());
			page.setSuccess(false);
			page.setMsg(e.getMsg());
		} catch (Exception e) {
			e.printStackTrace();
			logger.error(e.getMessage());
			page.setSuccess(false);
		}
		return page;
	}

}
